﻿using Admin.NET.Application.Entity;
using Admin.NET.Core;
using System.ComponentModel.DataAnnotations;

namespace Admin.NET.Application;

/// <summary>
/// 设备上下线基础输入参数
/// </summary>
public class DeviceOnOffLineBaseInput
{
    /// <summary>
    /// 设备名称
    /// </summary>
    public virtual long DeviceId { get; set; }

    /// <summary>
    /// 网关名称
    /// </summary>
    public virtual long GateWayId { get; set; }

    /// <summary>
    /// 状态
    /// </summary>
    public virtual IsOnline IsOnline { get; set; }

    /// <summary>
    /// 下线原因
    /// </summary>
    public virtual string OffLineReason { get; set; }

    /// <summary>
    /// 创建时间
    /// </summary>
    public virtual DateTime? CreateTime { get; set; }

    /// <summary>
    /// 更新时间
    /// </summary>
    public virtual DateTime? UpdateTime { get; set; }

    /// <summary>
    /// 创建者Id
    /// </summary>
    public virtual long? CreateUserId { get; set; }

    /// <summary>
    /// 创建者姓名
    /// </summary>
    public virtual string? CreateUserName { get; set; }

    /// <summary>
    /// 修改者Id
    /// </summary>
    public virtual long? UpdateUserId { get; set; }

    /// <summary>
    /// 修改者姓名
    /// </summary>
    public virtual string? UpdateUserName { get; set; }

    /// <summary>
    /// 软删除
    /// </summary>
    public virtual bool IsDelete { get; set; }
}

/// <summary>
/// 设备上下线分页查询输入参数
/// </summary>
public class PageDeviceOnOffLineInput : BasePageInput
{
    /// <summary>
    /// 关键字查询
    /// </summary>
    public string? SearchKey { get; set; }

    /// <summary>
    /// 设备名称
    /// </summary>
    public long? DeviceId { get; set; }

    /// <summary>
    /// 网关名称
    /// </summary>
    public long? GateWayId { get; set; }

    /// <summary>
    /// 状态
    /// </summary>
    public IsOnline? IsOnline { get; set; }

    /// <summary>
    /// 下线原因
    /// </summary>
    public string? OffLineReason { get; set; }
}

/// <summary>
/// 设备上下线增加输入参数
/// </summary>
public class AddDeviceOnOffLineInput : DeviceOnOffLineBaseInput
{
    /// <summary>
    /// 软删除
    /// </summary>
    [Required(ErrorMessage = "软删除不能为空")]
    public override bool IsDelete { get; set; }
}

/// <summary>
/// 设备上下线删除输入参数
/// </summary>
public class DeleteDeviceOnOffLineInput : BaseIdInput
{
}

/// <summary>
/// 设备上下线更新输入参数
/// </summary>
public class UpdateDeviceOnOffLineInput : DeviceOnOffLineBaseInput
{
    /// <summary>
    /// 主键Id
    /// </summary>
    [Required(ErrorMessage = "主键Id不能为空")]
    public long Id { get; set; }
}

/// <summary>
/// 设备上下线主键查询输入参数
/// </summary>
public class QueryByIdDeviceOnOffLineInput : DeleteDeviceOnOffLineInput
{
}